home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / rpg / crossfir.92 / crossfir / crossfire-0.92.5 / common / logger.c < prev    next >
C/C++ Source or Header  |  1996-07-24  |  2KB  |  81 lines

  1. /*
  2.  * static char *rcsid_loger_c =
  3.  *   "$Id: logger.c,v 1.2 1994/10/11 07:22:11 master Exp $ ";
  4.  */
  5.  
  6. /*
  7.     CrossFire, A Multiplayer game for X-windows
  8.  
  9.     Copyright (C) 1992 Frank Tore Johansen
  10.  
  11.     This program is free software; you can redistribute it and/or modify
  12.     it under the terms of the GNU General Public License as published by
  13.     the Free Software Foundation; either version 2 of the License, or
  14.     (at your option) any later version.
  15.  
  16.     This program is distributed in the hope that it will be useful,
  17.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.     GNU General Public License for more details.
  20.  
  21.     You should have received a copy of the GNU General Public License
  22.     along with this program; if not, write to the Free Software
  23.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  24.  
  25.     The author can be reached via e-mail to frankj@ifi.uio.no.
  26. */
  27.  
  28. #ifndef NO_LOG
  29.  
  30. #include <stdarg.h>
  31. #include <global.h>
  32. #include <funcpoint.h>
  33.  
  34. /*
  35.  * Logs a message to stderr, or to file, and/or even to socket.
  36.  * Or discards the message if it is of no importanse, and none have
  37.  * asked to hear messages of that logLevel.
  38.  * logLevels can be logError (always printed), llevDebug, and llevMonster.
  39.  */
  40.  
  41. void LOG (LogLevel logLevel, char *format, ...)
  42. {
  43. #ifdef SERVER
  44.   char buf[VERY_BIG_BUF];
  45.   sockets *s;
  46. #endif
  47.  
  48.   va_list ap;
  49.   va_start(ap, format);
  50.  
  51. #ifdef SERVER
  52.   buf[0] = '\0';
  53.   if (logLevel <= debug)
  54.   {
  55.     vsprintf(buf, format, ap);
  56.     fputs(buf, logfile);
  57.   }
  58.   for (s = first_socket; s != (sockets *) NULL; s = s->next)
  59.     if(s->debug && logLevel <= s->debug)
  60.     {
  61.       if(buf[0] == '\0')
  62.         vsprintf(buf, format, ap);
  63.       if(write(s->fd,buf,strlen(buf)) == -1)
  64.         perror("log/write");
  65.     }
  66. #else
  67.   if (logLevel <= debug)
  68.     vfprintf(logfile, format, ap);
  69. #endif
  70.   if (!exiting && !trying_emergency_save &&
  71.       logLevel == llevError && ++nroferrors > MAX_ERRORS) {
  72.     exiting = 1;
  73.     if (!trying_emergency_save)
  74.       (*emergency_save_func) (0);
  75.     if (!editor)
  76.     fatal(TOO_MANY_ERRORS);
  77.   }
  78.   va_end(ap);
  79. }
  80. #endif
  81.